The present invention relates in general to computer graphics, and in particular to antialiasing of image data using distributed rendering techniques.
As is known in the art, computer-generated images are susceptible to various visual artifacts resulting from the finite sampling resolution used in converting the image data to an array of discrete color samples (pixels). Such artifacts, generally referred to as “aliasing,” include jaggedness in smooth lines, irregularities in regular patterns, and so on.
To reduce aliasing, color is often sampled at a number of sampling locations that exceeds the number of pixels making up the final (e.g., displayed or stored) image. For instance, an image might be sampled at twice or four times the number of pixels. The samples are then blended (or filtered) to generate a single pixel value for the final image. Various types of oversampling are known in the art, including supersampling, in which each sampling location is treated as a separate pixel, and multisampling, in which a single color value is computed for each primitive that covers at least part of the pixel, but coverage of the pixel by the primitive is determined at multiple locations.
While oversampling does reduce aliasing effects, it also increases the computational burden associated with generating the image. For instance, in supersampling, each sample location requires a new color computation; thus, the number of operations required to generate an image scales with the number of sample locations This computational burden can limit the ability of existing systems to make use of oversampling in real-time applications.
To increase the computing power available to generate images, some computer systems employ multiple graphics processors, with rendering tasks distributed among the processors. For instance, each graphics processor might be assigned to render a different portion of an image, or different graphics processors might be assigned to render different images in a sequence (e.g., for video game animation or the like). Pixels from each graphics processor are provided to a display head, which selects a pixel from one graphics processor or another to be used in the final image.
It would be desirable to exploit the combined computational power of multiple graphics processors to perform antialiasing. Existing systems, however, do not support this, in part because the selection logic in the display head makes only either/or selections between pixels rendered by different graphics processors.